package pms.dao;

import java.util.StringTokenizer;

/**
 * Datum auf G&uuml;ltigkeit pr&uuml;fen
 */

public class DatumPruefer {

	public static String trennzeichen = ".";
	
	public boolean datumOK(String datum) throws Exception {

		boolean ok = true;
		int teil = 1; // die 3 Teile des Datums durchgehen, beginnen mit erstem Teil
		int tag = 0, monat = 0, jahr = 0;
		StringTokenizer st = new StringTokenizer(datum, trennzeichen);

		while (st.hasMoreTokens()) {
			if (teil == 1) {
				tag = Integer.valueOf(st.nextToken()).intValue();
				//Tag
			}
			if (teil == 2) {
				monat = Integer.valueOf(st.nextToken()).intValue();
				//Monat
			}
			if (teil == 3) {
				jahr = Integer.valueOf(st.nextToken()).intValue();
				//Jahr
				String Jahr = String.valueOf(jahr);
				int laenge = Jahr.length();
				if (laenge != 4) {
					ok = false;
				}
			}
			if (teil >= 4) {
				// irgendwie falsch Datum mit 4 Teilen
				ok = false;
				break;
			}
			teil++; // von Tag zu Monat zu Jahr wandern
		}
		if (ok == true) {
			try {
				
				//Schaltjahr
				if ((((jahr % 4) == 0) && ((jahr % 100) != 0) || ((jahr % 400) == 0))) {
					//Schaltjahr
					//Februar
					if (monat == 2) {
						//Kein gültiger Tag
						if (!(tag >= 1 && tag <= 29)) {
							ok = false;
						} else
							ok = true;
					}
				}
				else {
					//keinSchaltjahr
					//Februar
					if (monat == 2) {
                    //Kein gültiger Tag
						if (!(tag >= 1 && tag <= 28)) {
							ok = false;
						} else
							ok = true;
					}
				}
			    
				if (tag < 1 || tag > 31)
			    	ok = false;
			    if (monat < 1 || monat > 12)
			    	ok = false;
			    
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return ok;
	}
}

